<?php

/**
 * @author Dingo
 * @version 1.0
 */
class Modul_Admin_Zarzadzanie_ModulyEdycja extends Modul_Admin_Abstract {

    public function inicjalizuj() {
        $this->tytul = 'Edycja modułu';

        if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'edytuj') {
            $this->edytuj();
        } else if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'dodaj') {
            $this->dodaj();
        } else if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'usun') {
            $this->usun();
        }
    }
    
    public function prawa() {
        if (isset($this->uzytkownik['uprawienia']) &&
                !in_array('cms_zarzadzanie_moduly', $this->uzytkownik['uprawienia'])) {
            $this->zakoncz('/cms/logowanie/akcja,blad,info,3.html');
        }
        parent::prawa();
    }

    private function edytuj() {
        $id = isset($this->param['id']) ? $this->param['id'] : $_POST['id'];
        if (!is_numeric($id)) {
            die();
        }
        $tab = new AutoDB('cms_modul');
        $modul = $tab->Get($id);
        $this->daneTPL['form'] = Form_Moduly::generuj($modul, '/cms/moduly/edycja/akcja,edytuj.html');
        if (isset($_POST['nazwa'])) {
            $bledy = $this->waliduj();
            if (Form_Valid::isValid($bledy)) {
                //$modul = new AutoDBRecord();
                $modul->Set('nazwa', $_POST['nazwa']);
                $modul->Save();
                $this->zakoncz('/cms/moduly/');
            } else {
                $this->daneTPL['bledy'] = $bledy;
            }
        }
    }

    private function dodaj() {
        $tab = new AutoDB('cms_modul');
        $modul = $tab->Create();
        $this->daneTPL['form'] = Form_Moduly::generuj($modul, '/cms/moduly/edycja/akcja,dodaj.html');
        if (isset($_POST['nazwa'])) {
            $bledy = $this->waliduj();
            if (Form_Valid::isValid($bledy)) {
                //$modul = new AutoDBRecord();
                $modul->Set('nazwa', $_POST['nazwa']);
                $modul->Save();
                $this->zakoncz('/cms/moduly/');
            } else {
                $this->daneTPL['bledy'] = $bledy;
            }
        }
    }

    private function waliduj() {
        /* Walidacja */
        if (Form_Valid::isEmpty(Form_Valid::getFormValue('nazwa'))) {
            $bledy[] = "Nazwa modułu nie może być pusta";
        } else if (Form_Valid::isTooLong(Form_Valid::getFormValue("nazwa"), 150)) {
            $bledy[] = "Nazwa modułu musi mieć mniej niż 150 znaków";
        } else if (!Form_Valid::isTooShort(Form_Valid::getFormValue("nazwa"), 10)) {
            $bledy[] = "Nazwa modułu musi mieć więcej niż 10 znaków";
        }
        
        /* Sprawdzam czy moduł zawiera znaki alfabrtu + _ */
         if (!Form_Valid::isAlpha(Form_Valid::getFormValue('nazwa'), '_')) {
            $bledy[] = "Nazwa modułu może składać się z podkreślnika oraz znaków alfabetu łacińskiego";
         }

        /* Sprawdzam czy już moduł o takiej nazwie istnieje */
        $tab = new AutoDB('cms_modul');
        $jest = (boolean) $tab->Select('Count(*) as Count')->
                        Where(array('nazwa' => Form_Valid::getFormValue("nazwa")))->
                        GetFirst()->Count;
        if ($jest === true) {
            $bledy[] = "Już taki moduł jest w bazie danych.";
        }
        return $bledy;
    }

    private function usun() {
        if (!isset($this->param['id']) || !is_numeric($this->param['id'])) {
            die();
        }
        /* Sprawdzam przed usunięciem, czy moduł jest podłączony do jakiejś strony! */
        $tabStronaModul = new AutoDB('cms_strona_modul');
        if (($tabStronaModul->
                        Select('Count(*) as Count')->
                        Where(array('id_modul' => $this->param['id']))->
                        GetFirst()->Count) > 0) {
            echo 'blad';
            die();
        }
        /* Usuwanie modułu */
        $tabModul = new AutoDB('cms_modul');
        $tabModul->Delete($this->param['id']);
        die();
    }

}

?>